; haribote-os
; TAB=4



;有关BO0T INFO
;0xOff0设定启动区，
CYLS EQU 0x0ff0     ; 设定启动区
LEDS EQU 0x0ff1     ; 设定LED指示灯状态 
VMODE EQU 0x0ff2    ; 设定颜色数目的 8位彩色
SCRNX EQU 0x0ff4    ; 设定分辨率的X轴 (screen x)
SCRNY EQU 0x0ff6    ; 设定分辨率的Y轴 (screen y)
VRAM EQU 0x0ff8     ; 设定图像缓冲区的地址
; VRAMADDR EQU 0x0ffc ; 设定图像缓冲区的始地址
; ORG 0x08200          ; 程序被装载到的内存地址


ORG     0x08200      ; 程序将被加载到内存0xc200处执行

; 设置VGA显卡模式为320x200x8位彩色
MOV     AL,0x13
MOV     AH,0x00
INT     0x10

mov     BYTE[VMODE],8 ;记录画面模式
mov     WORD[SCRNX],320
mov     WORD[SCRNY],200
mov     DWORD[VRAM],0x000a0000

; 初始化键盘
;keyboard BIOS
MOV     AL,0x00
MOV     AH,0x02
INT     0x16
MOV     [LEDS],AL

mov si, msg   
call putstr 

fin:
HLT                 ; 停机指令
mov si, msg   
call putstr 
JMP     fin         ; 无限循环，停在HLT处

; --------------------------
; 辅助函数：打印字符串（SI=字符串地址）
; --------------------------
putstr:            
mov ah, 0x0e       ; BIOS 功能号：Teletype 输出
.put_char:         
mov al, [si]       
inc si             
cmp al, 0          
je .put_end        
int 0x10           
jmp .put_char      
.put_end:          
ret                


; --------------------------
; 数据区
; --------------------------
msg: db "My OS Starting ...", 0x0d, 0x0a, 0  
